package web.suzy.oj.service.oj;

import web.suzy.oj.common.result.ResultBean;
import web.suzy.oj.pojo.entity.problem.CodeTemplate;
import web.suzy.oj.pojo.entity.problem.Language;
import web.suzy.oj.pojo.entity.problem.Tag;
import web.suzy.oj.pojo.vo.CaptchaVO;
import web.suzy.oj.pojo.vo.ProblemTagVO;

import java.util.Collection;
import java.util.List;

/**
 * YangSuzy 软件工作室
 * 类名: CommonService
 * 描述: ---- 待定 -----
 * 功能: ---- 待定 -----
 *
 * @author YangSuzy
 * Date: 2022/11/14 12:48
 */
public interface CommonService {

    /**
     * 方法名: getCaptcha
     * 描述: 获取验证码
     *
     * @return web.suzy.oj.common.result.ResultBean<web.suzy.oj.pojo.vo.CaptchaVO>
     * @date 2022/11/14 12:49
     * @auther YangSuzy
     **/
    ResultBean<CaptchaVO> getCaptcha();

    /**
     * 方法名: getProblemTagsAndClassification
     * 描述: 获取题目标签和标签分类
     *
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.vo.ProblemTagVO>>
     * @date 2022/12/11 16:10
     * @auther YangSuzy
     **/
    ResultBean<List<ProblemTagVO>> getProblemTagsAndClassification();

    /**
     * 方法名: getAllProblemTagsList
     * 描述: 获取所有标签列表
     *
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.entity.problem.Tag>>
     * @date 2022/12/11 20:31
     * @auther YangSuzy
     **/
    ResultBean<List<Tag>> getAllProblemTagsList();

    /**
     * 方法名: getProblemTags
     * 描述: 根据题目ID获取题目标签
     *
     * @param pid 题目ID
     * @return web.suzy.oj.common.result.ResultBean<java.util.Collection < web.suzy.oj.pojo.entity.problem.Tag>>
     * @date 2022/12/11 20:55
     * @auther YangSuzy
     **/
    ResultBean<Collection<Tag>> getProblemTags(Long pid);

    /**
     * 方法名: getLanguages
     * 描述: 获取所有编程语言
     *
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.entity.problem.Language>>
     * @date 2022/12/11 21:10
     * @auther YangSuzy
     **/
    ResultBean<List<Language>> getLanguages();

    /**
     * 方法名: getProblemLanguages
     * 描述: 根据题目ID获取题目支持的语言
     *
     * @param pid
     * @return web.suzy.oj.common.result.ResultBean<java.util.Collection < web.suzy.oj.pojo.entity.problem.Language>>
     * @date 2022/12/11 21:44
     * @auther YangSuzy
     **/
    ResultBean<Collection<Language>> getProblemLanguages(Long pid);

    /**
     * 方法名: getProblemCodeTemplate
     * 描述: 根据题目ID获取题目代码模板
     *
     * @param pid 题目ID
     * @return web.suzy.oj.common.result.ResultBean<java.util.List < web.suzy.oj.pojo.entity.problem.CodeTemplate>>
     * @date 2022/12/11 21:58
     * @auther YangSuzy
     **/
    ResultBean<List<CodeTemplate>> getProblemCodeTemplate(Long pid);
}
